// 引入createSlice,用来生成action和reducer
// createAsyncThunk用来创建异步函数的方法
import { createSlice,createAsyncThunk } from "@reduxjs/toolkit"
// 引入axios请求
import {movieRequest} from '../../api/index'


// 使用@reduxjs/toolkit提供的createAsyncThunk方法来创建异步action
// createAsyncThunk有两个参数,第一个是type的值,第二个是一个回调函数,这个回调函数就是我们的异步action函数
export const getMovseAction= createAsyncThunk('movie/getMovieList',async ()=>{
    // 执行axios请求,这是个异步操作,需要async&await
    const result = await movieRequest()
    console.log('result',result);
    // 这个函数中return的值就是在thunk中间件中在次dispatch的值
    return result.data.data.list
})


//添加配置
const movieSlice = createSlice({
    // 命名空间 name值作为action type的前缀
    name:'movie',
    // 初始值
    initialState:{
        movieList:[]
    },
    reducers:{
        // 我们这里发送请求是异步函数,不能在reducers中书写,要在外部书写
    },
    // 
    extraReducers:{
        [getMovseAction.fulfilled](prev,action){
            prev.movieList=action.payload
            console.log(prev,action);
        }
    }
})
// 暴露reducer
export default movieSlice.reducer


// 注意:initialState    reducers    单词书写一定要正确